#include <bits/stdc++.h>

using namespace std;

// 存储运算步骤的结构体
struct Step {
    string operation;  // 运算表达式，如"2+1=3"
};

// 全局变量，用于存储找到的解决方案
vector<Step> solution;
bool found = false;

// 递归函数，尝试合并数字
// nums: 当前剩余的数字
// steps: 当前的运算步骤
void solve(vector<double> nums, vector<Step> steps) {
    // 如果已经找到解决方案，直接返回
    if (found) return;

    // 如果只剩下一个数字，检查是否等于24（考虑浮点误差）
    if (nums.size() == 1) {
        if (fabs(nums[0] - 24) < 1e-6) {
            solution = steps;
            found = true;
        }
        return;
    }

    // 枚举所有可能的两个数字组合
    for (int i = 0; i < nums.size(); i++) {
        for (int j = 0; j < nums.size(); j++) {
            if (i == j) continue;  // 不能选择同一个数字

            // 取出两个数字
            double a = nums[i];
            double b = nums[j];

            // 创建新的数字列表，排除已选择的两个数字
            vector<double> newNums;
            for (int k = 0; k < nums.size(); k++) {
                if (k != i && k != j) {
                    newNums.push_back(nums[k]);
                }
            }

            // 尝试加法
            newNums.push_back(a + b);
            Step addStep;
            addStep.operation = to_string((int)a) + "+" + to_string((int)b) + "=" + to_string((int)(a + b));
            steps.push_back(addStep);
            solve(newNums, steps);
            steps.pop_back();  // 回溯
            newNums.pop_back();

            // 如果已经找到解决方案，直接返回
            if (found) return;

            // 尝试减法
            newNums.push_back(a - b);
            Step subStep;
            subStep.operation = to_string((int)a) + "-" + to_string((int)b) + "=" + to_string((int)(a - b));
            steps.push_back(subStep);
            solve(newNums, steps);
            steps.pop_back();  // 回溯
            newNums.pop_back();

            if (found) return;

            // 尝试乘法
            newNums.push_back(a * b);
            Step mulStep;
            mulStep.operation = to_string((int)a) + "*" + to_string((int)b) + "=" + to_string((int)(a * b));
            steps.push_back(mulStep);
            solve(newNums, steps);
            steps.pop_back();  // 回溯
            newNums.pop_back();

            if (found) return;

            // 尝试除法（注意除数不能为0，且结果必须是整数）
            if (b != 0 && fmod(a, b) == 0) {
                newNums.push_back(a / b);
                Step divStep;
                divStep.operation = to_string((int)a) + "/" + to_string((int)b) + "=" + to_string((int)(a / b));
                steps.push_back(divStep);
                solve(newNums, steps);
                steps.pop_back();  // 回溯
                newNums.pop_back();

                if (found) return;
            }
        }
    }
}

int main() {
    // 输入4个数字
    int a, b, c, d;
    cout << "请输入4个1~9之间的自然数: " << endl;
    cin >> a >> b >> c >> d;

    // 初始化数字列表
    vector<double> nums = {(double)a, (double)b, (double)c, (double)d};
    vector<Step> steps;

    // 调用递归函数求解
    solve(nums, steps);

    // 输出结果
    if (found) {
        cout << "找到解决方案: " << endl;
        for (const auto& step : solution) {
            cout << step.operation << endl;
        }
    } else {
        cout << "无法得到24" << endl;
    }

    return 0;
}